package Server.Jsmj.RGCP.QILE;

import java.util.Arrays;

public class RGCP {

	private final int o_value;
	private final RGCPType type;
	private final int typeId;

	public int getO_value() {
		return o_value;
	}

	public RGCPType getType() {
		return type;
	}

	public int getTypeId() {
		return typeId;
	}

	public RGCP(int o_value) {
		if (o_value >= 0 && o_value <= 8) {
			this.type = RGCPType.WAN;
			this.typeId = o_value + 1;
		} else if (o_value >= 9 && o_value <= 17) {
			this.type = RGCPType.TONG;
			this.typeId = o_value - 8;
		} else if (o_value >= 18 && o_value <= 26) {
			this.type = RGCPType.TIAO;
			this.typeId = o_value - 17;
		} else if (o_value >= 27 && o_value <= 33) {
			this.type = RGCPType.FENG;
			this.typeId = o_value - 26;
		} else if (o_value >= 34 && o_value <= 41) {
			this.type = RGCPType.HUA;
			this.typeId = o_value - 33;
		} else {
			this.type = RGCPType.UN_KONWN;
			this.typeId = -1;
		}
		this.o_value = o_value;
	}

	/**
	 * �Ƚϵ�ǰ�齫�ܷ�������齫�γ�һ��
	 * 
	 * @param maJiang
	 *            ����齫
	 * @param caishen
	 *            ����
	 * @return
	 */
	public boolean is_duizi(RGCP maJiang) {
		return o_value == maJiang.o_value;
	}

	public boolean is_shunzi(RGCP majiang1, RGCP majiang2) {
		if (this.type.equals(majiang1.type) && this.type.equals(majiang2.type)) {
			if (this.type.equals(RGCPType.WAN) || this.type.equals(RGCPType.TONG) || this.type.equals(RGCPType.TIAO)) {
				return is_shunzi(this.o_value, majiang1.o_value, majiang2.o_value);
			}
		}
		return false;
	}

	private static boolean is_shunzi(int id1, int id2, int id3) {
		int[] ids = { id1, id2, id3 };
		Arrays.sort(ids);
		if (ids[2] - ids[1] != 1) {
			return false;
		} else if (ids[1] - ids[0] != 1) {
			return false;
		}
		return true;
	}

	public boolean is_kezi(RGCP majiang1, RGCP majiang2) {
		if(this.o_value == majiang1.o_value && this.o_value == majiang2.o_value && !this.type.equals(RGCPType.HUA)){
			return true;
		}
		return false;
	}

	@Override
	public String toString() {
		String s = this.typeId + "" + this.type;
		return s;
	}

	@Override
	public boolean equals(Object obj) {
		if (obj == null) {
			return false;
		}
		if (obj instanceof RGCP) {
			RGCP objMaJiang = (RGCP) obj;
			if (objMaJiang.o_value == this.o_value) {
				return true;
			}
		}
		return false;
	}

	@Override
	protected RGCP clone() {
		RGCP majiang = new RGCP(this.o_value);
		return majiang;
	}

}
